ShimYuseob
  • 인프콘
  • 후기

2024 인프콘 정리 [인프런 아키텍쳐]

인프런에서 주최한 2024 컨퍼런스에서 배우고 알게된 경험을 잊지않기 위한 기록
2024.08.090 views

첫 번째 세션에 이어 인프랩의 CTO 이동욱님의 2024~2025 아키텍쳐 및 앞으로의 방향?에 대한 세션을 들었다.

인프런은 글로벌 서비스를 준비중인데, 글로벌 서비스를 준비하면서 겪은 문제들과 해결방법에 대한 이야기를 들을 수 있었다.

1. 트래픽 비용개선#

글로벌 서비스를 위해 무료 강의 오픈이나, 인프런에 대한 데이터를 홍보용으로 뿌려야하니 많은 트래픽 비용이 발생하게 되었는데 비용절감을 위한 가장 쉬운 방법이 이미지 포맷이라고 한다.

처음에는 화면에 필요한 만큼만 이미지를 전송하도록 width를 지정했는데, png나 jpeg는 높은 파일 크기를 가지기 때문에 그 만큼의 네트워크 비용이 발생한다. png, jpeg보다 낮은 크기의 포맷중 최근에 많이 사용되는 webp를 사용하면 네트워크 비용을 줄일 수 있는데, 이 보다 더 고화질/저용량 파일 포맷인 avif를 소개했다.

avif의 장점은 대부분의 브라우저에서 지원하므로 웬만하면 호환성을 고려하지 않아도 된다고 한다. 사용방법은 w=380&f=avif 처럼 사용하면되고 cloudFront와 lambda를 활용하고 있다고 했다.

두번째 비용절감 방법은 인프런의 카테고리 페이지의 데이터를 db에서 직접 내려받아 사용했는데

  1. 엘라스틱 캐시를 적용한다.
  2. 로컬 캐시로 전환한다. (EhCache)
  3. CDN 캐시를 활용한다.
  4. JSON을 API응답 캐시에 저장한다.

이러한 과정을 통해 비용 절감을 했다고 말했다.


2. API 환경개선#

기존 express를 next.js로 이주하는 과정에서 겪은 문제점과 해결방안을 소개했다.

인프런 팀은 next.js의 config 중 rewrites을 활용해서 api 프록시 서버를 사용했는데, 문제점이 사내 내부적으로만 사용하는 api를 rewrites이 외부로 돌리는 이슈가 발생했다.

해결방안으로 외부/내부 코드를 분리하는 방법과 내부/외부 api 모두 세션 체크를 하는 방법을 말했는데, 전자는 백엔드 인프라가 2배로 증가하는 문제가 있었고 후자는 인프라 부하에 코드 복잡도가 증가하는 문제가 있었다.

결국 api의 path를 구별하는 방식으로 문제를 해결했는데, 프론트에선 /client prefix를 붙여서 사용하는 방법이였다.

그러나 이 방법또한 문제가 있었는데, path가 추가될 수 록 유지보수가 어려웠고, path 관리수가 정해져 있었다.

결국 go기반의 미들웨어를 추가했고, 쿠키 헤더에 따라 특정 로드밸런서로 api를 요청하는게 가능해졌다고 한다.

후기#

aws관련 내용이 많았는데, aws를 자주 활용해보지 못해서 이해하는데 어려움이 있었다. 그래도 이론적인 원리는 어느정도 이해를 해서 개발 실력이 향상된다면 지금 들은 내용들을 이해하고 적용해볼 수 있지 않을까 싶다. 우선 avif 포맷으로 트래픽 비용을 줄이는 방법부터 차근차근 토이프로젝트에 적용해보려 한다.